import {SimpleTypeConst, jsonParseObjProps} from "st-common-core"
import {getEnv} from "@env"
import {EnvNameEnum} from '@config'
import {ResType, ResObjPropNameConst} from "st-common-req"

/**
 * 对解密前的响应数据进行 JSON 解析处理
 *
 * @param {ResType} res 响应数据
 * @returns {ResType} JSON 解析处理后的响应数据
 */
export const resDataJsonParseBeforeDecryptHandler = (res: ResType): ResType => {
  // 如果在环境变量中配置了关闭对响应数据的 JSON 解析处理
  if (!getEnv<boolean>(EnvNameEnum.RES_DATA_IS_JSON, SimpleTypeConst.BOOL)) return res
  // 如果响应数据没有被 JSON.stringify 处理过
  if (!res.isJsonStringify) return res
  // 对响应数据 JSON 解析处理
  return jsonParseObjProps({
    obj: res,
    props: [ResObjPropNameConst.MESSAGE]
  }) as ResType
}

/**
 * 对解密后的响应数据进行 JSON 解析处理
 *
 * @param {ResType} res 响应数据
 * @returns {ResType} JSON 解析处理后的响应数据
 */
export const resDataJsonParseAfterDecryptHandler = (res: ResType): ResType => {
  // 如果在环境变量中配置了关闭对响应数据的 JSON 解析处理
  if (!getEnv<boolean>(EnvNameEnum.RES_DATA_IS_JSON, SimpleTypeConst.BOOL)) return res
  // 如果响应数据没有被 JSON.stringify 处理过
  if (!res.isJsonStringify) return res
  // 对响应数据 JSON 解析处理
  return jsonParseObjProps({
    obj: res,
  }) as ResType
}
